# coding: utf-8
# Python的函数参数传递

a = 1
def fun(a):
	a = 2

fun(a)
print a # 1


# -

a = []
def fun(a):
	a.append(1)
	a = 1

fun(a)

print a # [1]


'''

所有变量都可以理解是内存中一个对象的`引用`
这里记住: 类型是属于对象的, 而不是属于变量的

当一个`引用`传递给函数的时候, 函数自动复制了一份`引用`, 函数内部的引用跟外部引用是没有关系的.
第一个例子把`引用`指向一个不可变的对象, 当函数返回的时候, 外面的`引用`没有被影响.
第二个例子就不一样了, 函数内的`引用`指向的是可变的对象, 调用函数的时候改变了这个对象.
于是, 函数外部的`引用`受到了影响.

'''